Embedding 引擎的能力
Embedding 引擎是怎么作用于模型的?
以一个 300 页的书的问答机器人为例,给读者展示下 LangChain 如何封装这个过程(这个例子来自 YouTube 博主 Data Independent 的 LangChain 101 系列视频,如果你想迅速上手 LangChain,强烈推荐观看):

核心思想就是先将一本书分成很多的文本块(chunk),对每个块分别总结,最后给用户交付的是“摘要的摘要”,过程中消耗的 token 数能节省很多。
-
哪怕是 GPT 的 32k token 限制,300 页的书也绝对超过了,因此我们需要引入上文这种 Map Reduce 的做法;
-
LangChain 提供了许多 PDF loader 来帮助上传 PDF,然后也提供许多类型的 splitter 让你可以将长文本切成数百个文本块,并尽量避免这么切可能导致的语义缺失;
-
有了文本块之后,你可以调用 OpenAI 的 Embedding 引擎将它们分别变成 Embeddings,即一些大的向量;
-
你可以在本地存储这些向量或者使用 Pinecone 这样的云向量数据库存储它们;
-
调用 LangChain 的 QA Chain 就可以进行问答了,这背后发生的是 —— 输入的问题也被 Embedding 引擎变成向量,然后使用 Pincone 的向量搜索引擎找到语义最接近的一些 Embedding,将它们再拼接在一起作为答案返回。
LangChain 在过程中提供了完整的集成,从 OpenAI 的 LLM 本身、Embedding 引擎到 Pinecone 数据库,并且将整体的交互逻辑进行了封装。如果你想用别人基于 LangChain 的代码 fork 这个 PDF 问答机器人,基本只需要换一下 OpenAI API key、Pincone API key 和用的这份 PDF。